package com.demo.java.OD451_500.OD499;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【判断一组不等式是否满足约束并输出最大差(B卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146469165
 */
public class OdMain {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String[] input_str = in.nextLine().split(";"); // 输入字符串按';'分隔

        // 变量初始化
        int num_eq = input_str[input_str.length - 1].split(",").length;  // 获取不等式个数
        int num_x = input_str[0].split(",").length;  // 获取变量个数
        double[][] a = new double[num_eq][num_x];  // 系数矩阵
        int[] x = new int[num_x];  // 变量值
        double[] b = new double[num_eq];  // 常量
        String[] eq = new String[num_eq];  // 不等式符号
        int[] res = new int[num_eq];  // 存储每个不等式的浮动值
        int result = 0;  // 最大浮动值
        boolean flag = true;  // 标记是否所有不等式成立

        // 解析系数矩阵a
        for (int i = 0; i < num_eq; i++) {
            String[] param_a = input_str[i].split(",");
            for (int j = 0; j < param_a.length; j++) {
                a[i][j] = Double.valueOf(param_a[j]); // 存储系数矩阵
            }
        }
        // 解析常量b
        String[] param_b = input_str[num_eq + 1].split(",");
        for (int i = 0; i < param_b.length; i++) {
            b[i] = Double.valueOf(param_b[i]);  // 存储常量
        }
        // 解析变量x
        String[] param_x = input_str[num_eq].split(",");
        for (int i = 0; i < param_x.length; i++) {
            x[i] = Integer.parseInt(param_x[i]);  // 存储变量值
        }
        // 解析不等式符号
        String[] param_char = input_str[num_eq + 2].split(",");
        for (int i = 0; i < param_char.length; i++) {
            eq[i] = param_char[i];  // 存储不等式符号
        }

        // 判断不等式结果并计算浮动值
        for (int i = 0; i < num_eq; i++) {
            double tmp = 0.0;
            // 计算系数与变量的乘积
            for (int j = 0; j < num_x; j++) {
                tmp += a[i][j] * x[j];
            }
            // 判断不等式是否成立
            if ("<=".equals(eq[i])) {
                flag = tmp <= b[i] ? flag && true : flag && false;
            } else if ("<".equals(eq[i])) {
                flag = tmp < b[i] ? flag && true : flag && false;
            } else if ("=".equals(eq[i])) {
                flag = tmp == b[i] ? flag && true : flag && false;
            } else if (">=".equals(eq[i])) {
                flag = tmp >= b[i] ? flag && true : flag && false;
            } else if (">".equals(eq[i])) {
                flag = tmp > b[i] ? flag && true : flag && false;
            }
            res[i] = (int) ((tmp - b[i]) / 1);  // 计算浮动值
        }

        // 求最大浮动值
        for (int i = 0; i < num_eq; i++) {
            result = Math.max(result, res[i]);
        }

        // 输出最终结果
        System.out.println(flag + " " + result);
    }
}